home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / raytrace / pxm_ray / pxm_ray.lha / pxm-ray / pixel_vector.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-12-09  |  1.0 KB  |  95 lines

  1.  
  2. /*
  3.  *    vector operations 
  4.  */
  5.  
  6. /*
  7.  *    (c) 1988 by George Kyriazis
  8.  */
  9.  
  10. #include    "ray.h"
  11. #include    <math.h>
  12.  
  13. struct    vector    vadd(a,b)
  14. struct    vector    a,b;
  15. {
  16.     register    struct    vector    c;
  17.  
  18.     c.x=a.x+b.x;
  19.     c.y=a.y+b.y;
  20.     c.z=a.z+b.z;
  21.  
  22.     return c;
  23. }
  24.  
  25. struct    vector    vsub(a,b)
  26. struct    vector    a,b;
  27. {
  28.     register    struct    vector    c;
  29.  
  30.     c.x=a.x-b.x;
  31.     c.y=a.y-b.y;
  32.     c.z=a.z-b.z;
  33.  
  34.     return c;
  35. }
  36.  
  37. struct    vector    vneg(a)
  38. struct    vector    a;
  39. {
  40.     register    struct    vector    b;
  41.  
  42.     b.x= -a.x;
  43.     b.y= -a.y;
  44.     b.z= -a.z;
  45.  
  46.     return b;
  47. }
  48.  
  49. struct    vector    svproduct(k,a)
  50. double    k;
  51. register    struct    vector    a;
  52. {
  53.     a.x*=k;
  54.     a.y*=k;
  55.     a.z*=k;
  56.  
  57.     return a;
  58. }
  59.  
  60. double    vdot(a,b)
  61. register    struct    vector    a,b;
  62. {
  63.     return (a.x*b.x+a.y*b.y+a.z*b.z);
  64. }
  65.  
  66. struct    vector    vcross(a,b)
  67. struct    vector    a,b;
  68. {
  69.     register    struct    vector    c;
  70.  
  71.     c.x=a.y*b.z-b.y*a.z;
  72.     c.y=b.x*a.z-a.x*b.z;
  73.     c.z=a.x*b.y-b.x*a.y;
  74.  
  75.     return c;
  76. }
  77.  
  78. /*
  79. struct    vector    nrmalize(a)
  80. struct    vector    a;
  81. {
  82.     float len;
  83.     struct    vector    b;
  84.  
  85.     printf("----\n");
  86.     len=sqrt(a.x*a.x+a.y*a.y+a.z*a.z);
  87.     b.x=a.x/len;
  88.     b.y=a.y/len;
  89.     b.z=a.z/len;
  90.  
  91.     return    b;
  92. }
  93. */
  94.  
  95.